Multidimensional navigation

ABSTRACT

Systems and methods for multidimensional navigation are disclosed. An application presents an interface for displaying resources. The interface comprises a first control for navigating resources according to a first dimension and a second control for navigating resources according to a second dimension. The application presents a first resource. The application receives a user input for selecting a link to a second resource. The application determines whether to navigate to the second resource via the first dimension or via the second dimension. Upon determining to navigate to the second resource via the first dimension, the application provides for use of the first control to navigate back to the first resource. Upon determining to navigate to the second resource via the second dimension, the application provides for use of the second control to navigate back to the first resource.

BACKGROUND

The subject technology generally relates to navigation in an applicationsuch as a web browser, a document processing application, a socialnetworking application, etc.

Current schemes for viewing and navigating resources, for example, pagesor other content, may include linear progressions. For example, a usermay enter the uniform resource indicator example.com into his/herbrowser, then select a link to view an article example.com/article1, andthen select another link to view an article example.com/article2. Theuser may then use the back button on his/her browser to navigate back toexample.com/article1, and then the forward button to return toexample.com/article2. A browser may include multiple tabs, each of whichhas a different linear progression.

One drawback of the above scheme is that a user researching a topic inmultiple tabs must rely on memory to remember why each tab was openedand what information it contains. This becomes exceedingly difficult asthe number of pages, tabs or windows increases. As the foregoingillustrates, a new technique for page navigation may be desirable.

SUMMARY

According to some aspects, the subject technology relates to acomputer-readable medium that stores instructions for implementing amethod. The method includes presenting, within an application window, aninterface for displaying resources, the interface comprising a firstcontrol for navigating resources according to a first dimension and asecond control for navigating resources according to a second dimension,wherein each of the first dimension and the second dimension correspondsto an ordered list of two or more resources. The method includespresenting, within the application window, a first resource. The methodincludes receiving, from within the first resource, a user input forselecting a link to a second resource. The method includes determining,based on at least one of the user input or metadata of the link, whetherto navigate to the second resource via the first dimension or via thesecond dimension. The method includes, upon determining to navigate tothe second resource via the first dimension: providing for use of thefirst control to navigate, within the application window, from thesecond resource back to the first resource. The method includes,navigating to the second resource and upon determining to navigate tothe second resource via the second dimension: navigating to the secondresource and providing for use of the second control to navigate, withinthe application window, from the second resource back to the firstresource.

According to some aspects, the subject technology relates to a method.The method includes presenting, within an application window, aninterface for displaying resources, the interface comprising a firstcontrol for navigating resources according to a first dimension and asecond control for navigating resources according to a second dimension,wherein each of the first dimension and the second dimension correspondsto an ordered list of two or more resources. The method includespresenting, within the application window, a first resource. The methodincludes receiving, from within the first resource, a user input forselecting a link to a second resource. The method includes determining,based on at least one of the user input or metadata of the link, whetherto navigate to the second resource via the first dimension or via thesecond dimension. The method includes, upon determining to navigate tothe second resource via the first dimension: navigating to the secondresource and providing for use of the first control to navigate, withinthe application window, from the second resource back to the firstresource. The method includes, upon determining to navigate to thesecond resource via the second dimension: navigating to the secondresource and providing for use of the second control to navigate, withinthe application window, from the second resource back to the firstresource.

According to some aspects, the subject technology relates to a system.The system includes one or more processors and a memory storinginstructions. The instructions include code to present, within anapplication window, an interface for displaying resources, the interfacecomprising a first control for navigating resources according to a firstdimension and a second control for navigating resources according to asecond dimension, wherein each of the first dimension and the seconddimension corresponds to an ordered list of two or more resources, andwherein at least one of the first control and the second controlcomprises a control for accessing a stacking interface. The instructionsinclude code to present, within the application window, a firstresource. The instructions include code to receive, from within thefirst resource, a user input for selecting a link to a second resource.The instructions include code to determine, based on at least one of theuser input or metadata of the link, whether to navigate to the secondresource via the first dimension or via the second dimension. Theinstructions include code to, upon determining to navigate to the secondresource via the first dimension: navigate to the second resource andprovide for use of the first control to navigate, within the applicationwindow, from the second resource back to the first resource. Theinstructions include code to, upon determining to navigate to the secondresource via the second dimension: navigate to the second resource andprovide for use of the second control to navigate, within theapplication window, from the second resource back to the first resource.

It is understood that other configurations of the subject technologywill become readily apparent from the following detailed description,where various configurations of the subject technology are shown anddescribed by way of illustration. As will be realized, the subjecttechnology is capable of other and different configurations and itsseveral details are capable of modification in various other respects,all without departing from the scope of the subject technology.Accordingly, the drawings and detailed description are to be regarded asillustrative in nature and not as restrictive.

BRIEF DESCRIPTION OF THE DRAWINGS

Features of the subject technology are set forth in the appended claims.However, for purpose of explanation, several aspects of the disclosedsubject matter are set forth in the following figures.

FIG. 1 illustrates an example tab of an application window.

FIG. 2 illustrates an example of initiating multidimensional navigation.

FIG. 3 illustrates an example of stacking one page on top of another.

FIG. 4 illustrates an example of an interface for multidimensionalnavigation where a single page from a stack is displayed.

FIG. 5 illustrates an example of a three dimensional interface formultidimensional navigation where a user may select a page from a stack.

FIG. 6 illustrates an example of a two dimensional interface formultidimensional navigation where a user may select a page from a stack.

FIG. 7 illustrates a first example conceptual view of linear pagenavigation.

FIG. 8 illustrates a first example conceptual view of multidimensionalnavigation.

FIG. 9 illustrates a second example conceptual view of linear pagenavigation.

FIG. 10 illustrates a second example conceptual view of multidimensionalnavigation.

FIG. 11 illustrates an example linear progression of pages.

FIG. 12 illustrates a first example multidimensional progression ofpages.

FIG. 13 illustrates a second example multidimensional progression ofpages.

FIG. 14A illustrates an example application window with multiple tabs.

FIG. 14B illustrates an example interface for multidimensionalnavigation.

FIG. 15 illustrates an example page being selected from a stack.

FIG. 16 illustrates an example stack of pages being selected.

FIG. 17 illustrates example buttons for interfacing with a page in astack.

FIG. 18A illustrates a first example interface for accessing stacks ofpages on a mobile device.

FIG. 18B illustrates a second example interface for accessing stacks ofpages on a mobile device.

FIG. 19 illustrates an example computing device which may implementmultidimensional navigation.

FIG. 20 illustrates an example process by which multidimensionalnavigation may be completed.

FIG. 21 conceptually illustrates an example electronic system with whichsome implementations of the subject technology are implemented.

DETAILED DESCRIPTION

The detailed description set forth below is intended as a description ofvarious configurations of the subject technology and is not intended torepresent the only configurations in which the subject technology may bepracticed. The appended drawings are incorporated herein and constitutea part of the detailed description. The detailed description includesspecific details for the purpose of providing a thorough understandingof the subject technology. However, it will be clear and apparent thatthe subject technology is not limited to the specific details set forthherein and may be practiced without these specific details. In someinstances, certain structures and components are shown in block diagramform in order to avoid obscuring the concepts of the subject technology.

The subject technology allows a user to navigate through multipledimensions of resources, such as pages or other content, rather than aunidimensional linear sequence of resources, within a single tab of anapplication (or a window in an application that does not use tabs), suchas a web browser, a document processing application, a gamingapplication, etc. According to some implementations, in addition tousing the back and forward buttons to navigate through a linear sequenceof pages, the user may associate a tab with a stack of pages throughwhich the user may visually navigate. The uniform resource indicator(URI) address of each page in the stack may be stored in the master URIof the stack associated with the tab, allowing for sharing orbookmarking of the stack. The user may display different stacks of pagesin different tabs or may navigate through various stacks of pages orsingle pages using the back and forward buttons in a single tab. As usedherein, a URI may include a uniform resource locator (URL), a uniformresource name (URN) or an indicator of other resources or content, forexample deep links of applications. In this context, the subjecttechnology may be used to navigate web pages in a browser or to navigateresources or content of any other forms, such as deep links ofapplications, word processing documents in a word processing program,resources or content in a multidimensional gaming application, etc. Someexamples of the subject technology are described herein in terms ofpages. However, the subject technology may be used with any otherresources or content in place of the pages, and is not limited to pagenavigation.

According to some implementations of the subject technology, anapplication window presents an interface for displaying pages. Theinterface includes a first control for navigating pages according to afirst dimension and a second control for navigating pages according to asecond dimension. The first dimension and the second dimensioncorrespond to an ordered list of two or more pages. For example, thefirst control may include a back button and a forward button. The secondcontrol may include a control for accessing a stacking interface. Forexample, the second control may include two or more parallel bars (orany other user interface element, such as a button) which, whenselected, cause a stack of pages to be presented. The stack may includepages that were previously presented in the application window.

The application window may present a first page. The application windowmay receive, from within the first page, a user input, such as a mouseclick or a touchdown on a touch screen, for selecting a link to a secondpage. The application window, may determine, based on at least one ofthe user input or the metadata of the link, whether to navigate to thesecond page via the first dimension or via the second dimension.Navigating via the first dimension may include presenting the secondpage in the window and allowing the user to return to the first page byselecting the back button. Navigating via the second dimension mayinclude adding the first page and the second page to a stack, andallowing the user to return to the first page by accessing the stack andselecting the first page from the stack. More specifically, upondetermining to navigate to the second page via the first dimension(e.g., the dimension accessed through back and forward buttons), theapplication may provide for use of the first control (e.g., the backbutton) to navigate, within the application window, from the second pageback to the first page. Alternatively, upon determining to navigate tothe second page via the second dimension (e.g., the dimension accessedthrough the stack), the application may provide for use of the secondcontrol (e.g., the control for accessing the stack) to navigate, withinthe application window, from the second page back to the first page.

The application window may include multiple tabs, and the techniquedescribed above may be implemented in a single tab of the applicationwindow. Alternatively, the application window may not include tabs. Apage may include a webpage accessible via the Internet or a page storedin local memory of the computing device implementing the subjecttechnology, such as a page including a locally-stored photograph or wordprocessing document. Some examples of the subject technology aredescribed herein in conjunction with a web browser application thatdisplays web pages. However, the subject technology may be implementedwith any type of application that displays any type of pages.

The subject technology may be useful in many different use cases. Forexample, in a web browser context, when reading an online encyclopedia,a user may start to read about the topic of the sun, then link to anarticle about stars, then link to an article about supernovae, and thenlink to an article about black holes. The user may get distracted by thebackground articles and may not read any of the articles fully. Usinglinear back/forward browsing, either in a single tab, a single window,multiple tabs or multiple windows, the user may get confused abouthis/her research path and how he/she came to be reading about blackholes. Using multidimensional browsing, as described herein, the usermay be able to more easily trace back his/her steps through the articlesabout black holes, supernovae, stars, and the sun, for example, byhaving all of these articles in a stacking interface.

In another use example in the web browser context, a succinct how-toarticle may use technical terms unfamiliar to a novice. Rather thanrelying on the reader to conduct his/her own research to define theseterms in a number of different tabs and windows, the author may providemultidimensional (e.g., stacking) links to articles explaining the termsvia multidimensional navigation. The user may quickly read themultidimensionally linked articles and come back to the originalarticle. For example, the how-to article may include the text, “use awidget-o-matic to align the gears.” If the reader clicks on the term“widget-o-matic,” a page may slide up explaining the meaning of thisterm. From the page that slid up, additional multidimensional (e.g.,stacking) links with further information about widget-o-matics may beprovided fur interested readers. For example, a link to an additionalarticle about “how to build your own widget-o-matic” may be provided.This allows readers who are interested in widget-o-matics to furtherresearch the topic, while those who simply want instructions to completetheir task not to be distracted. Furthermore, readers interested inwidget-o-matics will have a quick path back to the original article whenthey are finished researching widget-o-matics.

In addition, multidimensional navigation may save user's time whenclicking on links. For example, without multidimensional navigation, auser reading an article may: (1) right-click a link, (2) select “open innew tab,” then (3) find, and (4) click on the new tab to view thecontent. When finished, (5) the new tab is closed, and (6) the tabcontaining the original article is found and (7) selected. In amultidimensional navigation environment, a user reading an article maysimply (1) click on the link to view the content, and when finished (2)click on the navigation button, (3) scroll back to the original article,and (4) select it. In some cases, multidimensional navigation mayinclude, in addition to the back and forward buttons, fast back and fastforward buttons, or up or down buttons to more quickly navigate to animportant previously viewed page.

Some examples of multidimensional navigation are described herein in thecontext of a browser (e.g., web browser) navigating pages (e.g., webpages). However, multidimensional navigation is not limited to thiscontext and may be applicable in any context. Specifically, anyresources, not only pages, may be navigated via multidimensionalnavigation. For example, multidimensional navigation may be used tonavigate deep links to non-page-based resources or content within anapplication or applications, to navigate documents in a documentprocessing application, to navigate within a gaming application, etc.Resources or content navigated using multidimensional navigation may beaddressed using URIs, URLs, URNs or any other addressing technique.

FIG. 1 illustrates an example tab 104 of an application window 100. Ashown, the application window includes multiple tabs 102, 104, and 106,of which tab 104 is the active tab, and tabs 102 and 106 are inactive.The tab 104 includes a viewing area 116 that displays a page. Forinstance, if the application window 100 is a web browser window, thepage displayed in the viewing area 116 may be a webpage. The tab 104also includes and address bar 114. The address bar 114 includes theaddress of the page displayed in the viewing area 116. For instance, ifthe page is a webpage, the address bar 114 may include the URI addressof the webpage. The tab 104 further includes a back button 108, aforward button 110, and a reload button 112. The back button 108 and theforward button 110 allow the user to navigate through a linear sequenceof pages. The linear sequence may be arranged based on an order in whichthe pages in the linear sequence were presented in the tab 104. Thereload button 110, when selected, causes the page displayed in theviewing area 116 to be reloaded (e.g., from a web server).

FIG. 2 illustrates an example of initiating multidimensional navigationin the application window 100 with the active tab 104. As shown in FIG.2, the user may hover a mouse (or a finger on a touchscreen) over amultidimensional link 202. Responsive to the hovering, the previouslydisplayed page may continue to be displayed in the viewing area 116 ofthe tab 104. In addition, at least a portion of a page accessiblethrough the link 202 may be presented within the content area 206, forinstance, at the bottom of the tab as illustrated. The user may selectthe link 202, for example, by clicking the mouse over the link 202. Inresponse to the user selecting the link 202, the interface described inconjunction with FIG. 3 or FIG. 4, below, may be presented.

A link 202 may be classified as a multidimensional link based onmetadata of the link 202 provided by an author of the page, indicatingthat the link 202 should be treated as a multidimensional link.Alternatively, the link 202 may be classified as a multidimensional linkbased on options selected by a user of the application corresponding tothe application window 100. In some examples, the user may left-click onthe link 202 for the link 202 to be treated as a multidimensional link,or the user may right-click on the link 202 and select an option from adrop down menu for the link 202 to be treated as a non-multidimensionallink. In some cases, a rule can be defined to determine whether anexisting link should be treated as multidimensional ornon-multidimensional. For example, a link to a page that is in the sameorigin as the page including the link (e.g., same protocol, hostname,and port number) may be treated as multidimensional and other links maybe treated as non-multidimensional by default. Upon selection of anon-multidimensional link, the linked page may be presented in theviewing area 116, and the user may cause the previous page to bere-presented by selecting the back button 108. In a multidimensionalnavigation system, a first dimension of navigation may be navigatedusing the back button 108 and the forward button 110, and the seconddimension may be navigated by stacking pages one on top of another, forexample, as the page 206 is stacked on top of the currently displayedpage that includes the link 202.

FIG. 3 illustrates an example of stacking one page on top of another inthe application window 100. The interface of FIG. 3 may be presentedafter the user selects the multidimensional link 202 of FIG. 2. Uponselection of the multidimensional links, a stack of pages 302 and 304may be presented in the viewing area 116. The stack may include thepreviously presented page 302 and the newly presented page 304, whichwas accessed through the link. The newly presented page 304 may occupy amajority of the viewing area 116, with a small portion of the viewingarea 116 allocated to the previously presented page 302, so that theuser may easily select or navigate back to the previously presented page302. The presented portion of the previously presented page 302 mayinclude the multidimensional link 202 through which the user accessedthe newly presented page 304, so that the user may easily remember howhe/she came to be viewing the newly presented page 304.

As shown in FIG. 3, the stack may have its own address displayed in theaddress bar 114. In some examples, the address of the stack may includea combination of the addresses of the pages 302 and 304 in the stack.For example, if the pages 302 and 304 are webpages having URIs, the URIof the stack may include a combination of the URIs of the pages 302 and304 in the stack. The user may save the address of the stack, forexample, to a bookmark. The user may share the address of the stack, forexample, via a messaging application. The application may share the URIof the stack via a messaging service in response to a user input.

One drawback of the implementation described in conjunction with FIG. 3is that space in the viewing area 116 is occupied by the previouslypresented page 302 (and possibly other previously presented pages),preventing the user from using the full viewing area 116 to study thenewly presented page 304.

FIG. 4 illustrates an example of an interface for multidimensionalnavigation where a single page 304 from a stack is displayed in theviewing area 116 of the application window 100. The single page 304 maycorrespond to the newly presented page 304 of FIG. 3. The applicationwindow 100 also includes an indicator 402 indicating that other stackedpages are available. For example, the indicator 402 may include twostacked lines, as shown. Alternatively, the indicator 402 may be abutton, a highlighted icon or any other indicator. The user may selectthe indicator 402 to cause the application window to provide aninterface for accessing other pages in the stack. Examples of such aninterface are discussed herein, for example, in conjunction with FIG. 3,above, or FIGS. 5 or 6, below.

FIG. 5 illustrates an example of a three dimensional interface formultidimensional navigation where a user may select a page from a stackin the application window 100. For example, the three dimensionalinterface of FIG. 5 may be presented in response to the user's selectionof the indicator 402 of FIG. 4. As shown in FIG. 5, cards 502, 504, 506,508, and 510 representing pages in the stack are presented in theviewing area 116 of the active tab 104. Each card 502, 504, 506, 508,and 510 may include a portion of the represented page or an address ofthe represented page. The user may use a cursor 512 (or a finger orother touching device on a touchscreen) to scroll through or select acard from the stack. When the user hovers the cursor 512 over the card508, as shown, the card 508 may become enlarged within the viewing area116, while other cards 502, 504, 506, and 510 are still presented. Whenthe user selects the card 508, using the cursor 512, the page associatedwith the card 508 may be displayed fully within the viewing area 116.For example, the interface of FIG. 4 may be used, with the pageassociated with card 508 being presented in the area marked by referencenumeral 304. As shown in FIG. 5, when the cards 502, 504, 508, 508, and510 of the stack are displayed, the address of the stack may bepresented in the address bar 114. In FIG. 5, the first dimension maycorrespond to a dimension navigated via the back button 108 and theforward button 110. The second dimension may correspond to the pagesrepresented by the cards 502, 504, 506, 508, and 510.

FIG. 6 illustrates an example of a two dimensional interface formultidimensional navigation where a user may select a page from a stackin the application window 100. For example, the two dimensionalinterface of FIG. 6 may be presented in response to the user's selectionof the indicator 402 of FIG. 4. The interface of FIG. 6 may be analternative interface to the interface of FIG. 5. As shown in FIG. 6,cards 602, 604, 606, 608, 610, 612, and 614 representing pages in thestack are presented in the viewing area 116 of the active tab 104. Theuser may use a cursor 616 (or a finger or other touching device on atouchscreen) hover over or select a card from the stack. When the userhovers the cursor 616 over the card 610, as shown, the card 610 maybecome enlarged within the viewing area 116, while other cards 602, 604,606, 608, 612, and 614 are still presented. When the user selects thecard 610, using the cursor 616, the page associated with the card 610may be displayed fully within the viewing area 116. For example, theinterface of FIG. 4 may be used, with the page associated with card 610being presented in the area marked by reference numeral 304. As shown inFIG. 6, when the cards 602, 604, 606, 608, 610, 612, and 614 of thestack are displayed, the address of the stack may be presented in theaddress bar 114. In the example of FIG. 6, the first dimension maycorrespond to a dimension navigated via the back button 108 and theforward button 110. The second dimension may correspond to the pagesrepresented by the cards 602, 604, 606, 608, 610, 612, and 614.

FIG. 7 illustrates a first example conceptual view 700 of linear pagenavigation. The conceptual view 700 illustrates two windows 710 and 740.The window 710 has two tabs 720 and 730. The tab 720 includes threepages 721 722, and 723 arranged in a linear sequence that can betraversed using the back and forward buttons of an application window(e.g. the back button 108 and the forward button 110 of the applicationwindow 100 of FIG. 1). For instance, when page 722 is presented, theuser may select the back button to cause the previous page 721 in thelinear sequence to be presented or the user may select the forwardbutton to cause the next page 723 in the linear sequence to bepresented. When page 721 is presented, the user may select the forwardbutton to cause the next page 722 in the sequence to be presented. Whenpage 723 is presented, the user may select the back button to cause theprevious page 722 in the sequence to be presented.

The tab 730 includes three pages 731, 732, and 733, and operatessimilarly to the tab 720. The window 740 has two tabs 750 and 760. Thetab 750 includes three pages 751, 752, and 753 arranged in a linearsequence that operates similarly to the linear sequence of the tab 720.The tab 760 includes three pages 761, 762, and 763 arranged in a linearsequence that operates similarly to the linear sequence of the tab 720.

FIG. 8 illustrates a first example conceptual view of multidimensionalnavigation in a window 800. The window 800 may correspond to theapplication window 100. As shown, the window 800 includes three tabs801, 802, and 803, which may correspond to the tabs 102, 104, and 106 ofthe application window 100 of FIG. 1. The tab 802 includes multiplepages 811-825 arranged in a multidimensional sequence. As shown themultidimensional sequence begins with a linear sequence of pages811-818. The linear sequence of pages 811-818 may be traversed, forexample, using the back and forward buttons and represents a firstdimension. Pages 811, 813, 815, 817, and 818 are single pages notassociated with a stack. However, page 812 is stacked with page 819 in asecond dimension. For example, pages 812 and 819 may be associated withcards in a stack, as shown in FIGS. 5 and 6. Page 819 may have beenopened via a multidimensional link (e.g., multidimensional link 202)from page 812. Similarly, page 814 is stacked with pages 820 and 821 inthe second dimension and page 816 is stacked with pages 822 and 823 inthe second dimension.

As also shown, page 823 is in a line with pages 824 and 825,representing a third dimension of navigation. According to someexamples, the third dimension represents a “stack within a stack.” Forexample, while viewing page 822, the user may have selected amultidimensional link that opened the stack of pages 823-824-825.According to other examples, the third dimension is traversed via theback and forward buttons, similar to the first dimension. In theseexample, if a user selects the forward button while viewing page 816,the application may navigate to page 817. However, if the user traversesthe stack from page 816 to page 823, and then selects the forwardbutton, the user application may navigate to page 824.

In summary, FIG. 8 represents three dimensions of navigation (firstdimension 811-818, second dimension 812-819, 814-820-821, and816-822-823, and third dimension 823-824-825). However, any number ofdimensions of page navigation may be created using the subjecttechnology via the “stack within a stack” technique, or via multipleuses of stacks and back/forward button navigation. For example, thesubject technology may include four, five, six, seven, etc., dimensionsof page navigation.

FIG. 9 illustrates a second example conceptual view of linear pagenavigation in a window 900. As shown, the window 900 includes a tab 910,which include three pages 911, 912, and 913 in a linear sequence. Thelinear sequence of pages 911, 912, and 913 may be navigated using theback and forward buttons. For instance, when page 912 is presented, theuser may select the back button to cause the previous page 911 in thelinear sequence to be presented or the user may select the forwardbutton to cause the next page 913 in the linear sequence to bepresented. When page 911 is presented, the user may select the forwardbutton to cause the next page 912 in the sequence to be presented. Whenpage 913 is presented, the user may select the back button to cause theprevious page 912 in the sequence to be presented.

FIG. 10 illustrates a second example conceptual view of multidimensionalnavigation in a window 1000. As shown, the window 1000 includes a tab1010, which includes multiple pages 1011.1-4, 1012.1-3, and 1013.1-5.The pages 1011.1, 1012.1, and 1013.1 are in a linear sequencerepresenting a first dimension of navigation, which may be navigated,for example, using back and forward buttons. In addition, pages 1011.1-4are stacked together representing a second dimension of navigation,which may be navigated via a stack interface as illustrated in FIGS. 5and 6. Pages 1012.1-3 are similarly stacked together in a stackinterface, which may be navigated via the stack interface. Pages1013.1-5 are similarly stacked together in a stack interface, which maybe navigated via the stack interface.

FIG. 11 illustrates an example linear progression 1100 of pages. Thepages 1101-1107 are in the linear progression, and a user may navigatethrough the pages using the back button (e.g., back button 108 ofFIG. 1) and the forward button (e.g., forward button 110 of FIG. 1). Forexample, when viewing page 1102, the user may use the back button tonavigate to page 1101 or the forward button to navigate to page 1103.For any page n, where n is between 1102 and 1106, the user may use theforward button to view page n+1 and the back button to navigate to pagen−1.

FIG. 12 illustrates a first example multidimensional progression 1200 ofpages. As shown, the multidimensional progression includes two linearprogressions of pages—pages 1210-1270 (incremented by 10) and pages1238-1242 (incremented by 1). As shown, the two linear progressions1210-1270 and 1238-1242 intersect at page 1240, from where a user mayswitch from navigating via one linear progression to navigating viaanother linear progression. The two linear progressions 1210-1270 and1238-1242 may represent two stacks of pages. Alternatively, one of thelinear progressions may be traversed by the back button and the forwardbutton, and another one of the linear progressions may be represented bya stack. To switch from one linear progression to another, while viewingpage 1240, the user may select the stack in which he/she wishes tonavigate or the user may select to navigate via the stack or via theback and forward buttons.

FIG. 13 illustrates a second example multidimensional progression 1300of pages. As shown, the multidimensional progression 1300 includes pages1301-1323 arranged in four different linear progressions of pages.According to some examples, the horizontal progressions1301-1302-1303-1304-1305-1306-1307 and1313-1314-1311-1315-1316-1317-1318-1319-1320 may correspond to linearprogressions navigated via the back button and the forward button, andthe vertical progressions 1308-1309-1304-1310-1311-1312 and1321-1322-1319-1323 may correspond to progressions navigated via astack. When viewing pages 1304, 1311 or 1319 located at intersections ofprogressions, the user may select through which progression he/shewishes to navigate, for example, by accessing either the interface forback/forward button navigation or the interface for stack navigation. Asillustrated in FIG. 13, multiple intersections are possible in thesubject technology, for example, by modifying the back and forwardbuttons to operate differently based on different positions in a stackof pages. For example, while viewing page 1304, the user may select theback button to navigate to page 1303 or the forward button to navigateto page 1305. Alternatively, the user may navigate through the stack topage 1311. Upon arriving at page 1311, the user may select the backbutton to navigate to page 1314 or the forward button to navigate topage 1315. Alternatively, both the horizontal and the verticalprogressions may represent intersecting stacks that intersect at thepages 1304, 1311, and 1319.

FIG. 14A illustrates an example application window 1400A with multipletabs. The application window 1400A may be used with multidimensionalnavigation or with linear page navigation. In some examples, theapplication window 1400A illustrates how content can be organized withlinear page navigation. As shown, the application window 1400A includestabs 1401A, 1402A, 1403A, 1404A, 1405A, 1406A, and 1407A. Each of thetabs 1401A-1407A may be used to implement multidimensional navigationindependently of the other tabs. The application window 1400A alsoincludes a viewing area 1410A, where a page associated with one of thetabs 1401A-1407A, the active tab, may be presented.

FIG. 14B illustrates an additional example interface 1400B formultidimensional navigation. The interface 1400B may exist in a tab of awindow, in an instance of a window that does not have tabs or in adisplay of a non-window-based application. As shown in FIG. 14B, a page1410B is displayed, along with a northward navigation control 1405B-N,an eastward navigation control 1405B-E, a southward navigation control1405B-S, and a westward navigation control 1405B-W. The controls 1405Ballow for navigating through pages previously accessed in the interface1400B in multiple different dimensions (north-south and east-west).

For example, when the northward navigation control 1405B-N is selectedfrom the page 1410, the page 1420B may be presented, and the user latermay return to the page 1410B using the southward navigation control1405B-S. When the southward navigation control 1405B-S is selected fromthe page 1410, the page 1440B may be presented, and the user later mayreturn to the page 1410B using the northward navigation control 1405B-N.When the eastward navigation control 14059-E is selected from the page1410, the page 1430B may be presented, and the user later may return tothe page 1410B using the westward navigation control 1405B-W. When thewestward navigation control 1405B-W is selected from the page 1410, thepage 1450B may be presented, and the user later may return to the page1410B using the eastward navigation control 1405B-E. It should be notedthat the direction names—north, south, east, and west—are used asexamples only and may be replaced with any other names orrepresentations of directions (e.g., up, down, right, and left).

FIG. 15 illustrates an example page being selected from a stack in theapplication window 100. As shown, the display area 116 of theapplication window 100 is displaying cards 1502,1504, 1506, 1508, and1510, representing pages in a stack. The user used the cursor 1520 toselect the card 1508. After selecting the card 1508, the user may usethe cursor 1520 to indicate an action to be taken with the pageassociated with the card 1508. For example, the use may drag the card tothe address bar 114 to cause the page associated with the card 1508 tobe opened as the next page in the back/forward button linearprogression. The user may drag the card 1508 to the top of theapplication window 100, adjacent to the indicators of the tabs 102, 104,and 106, to cause the page associated with the card 1508 to open in anew tab. The user may drag the card 1508 to the left to remove the pageassociated with the card 1508 from the stack. The user may drag and dropthe card 1508 across the stack to change the position of the card 1508in the stack. The user may drag the card 1508 to the right to open thepage associated with the card 1508 in a new window.

FIG. 16 illustrates an example 1610 stack of pages being selected in theapplication window 100. The stack 1610 may represent two or more pagesfrom the stack displayed in the active tab 104 or the stack 1610 may beimported into the active tab 104 from another tab, another window, abookmark or a message in a messaging application. As shown, the stack1610 is selected using a cursor 1620. Upon selection, the user may usethe cursor 1620 to indicate an action to be taken with the stack 1610.For example, the stack 1610 may be dragged to the back button 108 toappend the stack 1610 to an existing stack prior to the stack currentlydisplayed in active tab 104 in the first dimension. The stack 1610 maybe dragged to the forward button 110 to append the stack 1610 to anexisting stack following to the stack currently displayed in active tab104 in the first dimension. The stack 1610 may be dragged to an inactivetab 102 or 106 to append the stack 1610 to the existing stack in thatinactive tab 102 or 106 either at the beginning or at the end of thestack, depending on settings specified by the application associatedwith the application window 100. The stack 1610 may be dragged into themiddle of the stack presented in the tab 104 to insert the stack 1610into the middle of the stack presented in the tab 104. Using thistechnique, multiple cards of the stack may be reordered simultaneously.The stack 1610 may be dragged into another window. If the stack 1610 isdragged into an existing window, the stack is added to any existingstack in that window (no alterations to existing buttons or tabs mightbe done). If the stack 1610 is dragged to the other predetermined area(e.g., open area to the right) where there is no existing window, thentabs and buttons may be created in the existing window to the extentthat this is already done by the application (e.g., browser) and theoperating system with the exception of any new buttons specific tomultidimensional navigation (e.g., button(s) relating to navigating inthe second dimension). As would be realized by a skilled person, anyuser action described herein for a single page/card in a stack may becompleted on a set of multiple pages/cards in the stack or on an entirestack.

FIG. 17 illustrates example buttons for interfacing with a page in astack in the application window 100. As shown, a card 1702 representinga page in the stack is selected. The card 1702 includes buttons 1704,1706, 1708, and 1710 for interfacing with the card, as an alternative orin addition to the drag-and-drop techniques described above. Forexample, button 1704, when selected, may allow the user to share thepage associated with the card 1702 via a messaging service. Button 1706,when selected, may cause the page associated with the card 1702 to openin a new window. Button 1708, when selected, may cause the pageassociated with the card 1702 to open in a new tab. Button 1710, whenselected, may cause the card 1702 to be removed from the stack.

Several different buttons and drag-and-drop commands for interfacingwith the stack are described herein. However, different buttons ordrag-and-drop commands from those described herein may also be used tointerface with the stack. In addition, other user interface techniques,different from buttons or drag-and-drop, may be used to interface withthe stack. In some cases, on a computing device with a keyboard,keyboard shortcuts may be used in addition to or in place of one or moreof the buttons 1704, 1706, 1708, and 1710.

FIG. 18A illustrates a first example interface for accessing stacks ofpages on a mobile device 1800A. As shown, the mobile device 1800A has adisplay screen 1802A. The display screen 1802A displays two stacks 1804Aand 1806A and indicators 1808A that additional stacks exist. Thedisplayed stacks 1804A and 1806A may be arranged according to an order,for example, the order in which they were created according to a firstlinear progression (e.g., corresponding to back/forward buttonnavigation). The indicators 1808A may also be arranged according to theorder, with indications (e.g., enlargement, highlighting, etc.) of theindicators corresponding to the stacks 1804A and 1806A that arecurrently on the display screen 1802A.

FIG. 18B illustrates a second example interface for accessing stacks ofpages on a mobile device 1800B. As shown, the mobile device 180B has adisplay screen 1802B. The display screen 1802B displays four stacks1803B, 1804B, 1805B, and 1806B and indicators 1808B and 1810B thatadditional stacks exist. Each row of stacks 1804B-1806B and 1803B-1805Bmay correspond to a tab in an application. The displayed stacks in eachtab may be arranged according to an order, for example, the order inwhich they were created according to a first linear progression (e.g.,corresponding to back/forward button navigation). The indicator 1808Bindicates that additional stacks exist in at least one of the linearprogressions of stacks 1804B-1806B or 1803B-1805B. The indicator 1810Bindicates that additional tabs exist. Each of the indicators 1808B and1810B may also be arranged according to the order, with indications(e.g., enlargement, highlighting, etc.) of the indicators correspondingto the stacks 1803B, 1804B, 1805B, and 1806B that are currently on thedisplay screen 1802A.

In the above examples, a first dimension of navigation, which may usethe back button 108 and the forward button 110 of FIG. 1, may beimplemented by storing a list of addresses previously visited pages inthe application. The addresses may include URI addresses. A seconddimension of navigation, which may use a stack, may be implemented bycombining the URI addresses into a single master URI address. The URIaddresses may be written into the master URI address in the same orderin which they are placed in the stack. A combination character or set ofcharacters, for example &&& may be placed in between the URI addressesof the pages in the stack. For example, a user may place the pagesexample.com/mercury.html, example.com/venus.html, andexample.com/mars.html in the stack. The master URI of the stack may thenbe:example.com/mercury.html&&&example.com/venus.html&&&example.com/mars.html,where the three URIs of the pages are in the same order as they appearin the stack, and the combination characters &&& are placed in betweenthe URIs of the pages. In some cases, the master URI may be compressedfrom the combination of URIs described above. For example, gzip orsimilar compression techniques may be used.

FIG. 19 illustrates an example computing device 1900 which may implementmultidimensional navigation. As shown, the computing device 1900includes a processor 1905, a network interface 1910, and a memory 1915.While a single processor 1905 is illustrated, the computing device 1900may have multiple processors arranged in one or more processing units,such as a central processing unit (CPU), a graphics processing unit(GPU) or any other processing unit. The processor 1905 executes computerinstructions that are stored in a computer-readable medium, for example,the memory 1915. The network interface 1910 allows the computing device1900 to transmit and receive data in a network, for example, theInternet, a WiFi network, a cellular network, a local area network, awide area network, etc. The memory 1915 stores data and/or instructions.The memory 1915 may be one or more of a cache unit, a storage unit, aninternal memory unit, or an external memory unit. As illustrated, thememory 1915 includes an application 1920.

The application 1920 may be any application that displays pages. Forexample, the application 1920 may be a web browser application, adocument processing application, a book reading application, a gamingapplication, a social networking application, etc. The application 1920may correspond to the application that displays the application window100 of FIG. 1. As shown, the application 1920 includes a page displaymodule 1925 that controls how pages are displayed by the application1920. The page display module may include instructions for implementing,via the processor 1905, the process described below in conjunction withFIG. 20. The page display module 1925 includes tabs 1930, 1940, and1950. The tab 1930 stores multiple pages 1935.1-N, which may benavigated according to a linear progression or a multidimensionalprogression using the back/forward buttons and/or stacks. Similarly, thetab 1940 stores pages 1945.1-N and the tab 1950 stores pages 1955.1-N.While the application 1920, is shown as having multiple tabs 1930, 1940,and 1950, the subject technology may also be implemented in anapplication that does not use tabs.

As described above, the subject technology may be implemented locally onthe computing device 1900, within the application 1920, in the memory1915 of the computing device 1900. The code for implementing the subjecttechnology may reside, fully or partially, on the computing device 1900.Alternatively, the code for implementing the subject technology mayreside, fully or partially, on a server or servers remote from thecomputing device 1900. According to one example, a user may decide, whenselecting a link, whether a linked page should be navigated to using thefirst dimension or the second dimension. For example, the linked pagecould be navigated to using the second dimension by default or using thefirst dimension if the user right clicks the link and selects anappropriate option in the presented drop-down menu. The code forimplementing the user's decision may reside at the computing device1900. According to another example, the author of the page providing thelink may provide, within the link, instructions regarding whether thelink should be navigated to using the first dimension or the seconddimension. For example, links may be navigated to using the firstdimension by default, or using the second dimension if the author of thepage providing the link adds a special instruction within the code ofthe page. The code for implementing the author's instruction may residein a web server or web servers remote from the computing device 1900.Alternatively, the code for implementing the author's instructions canreside locally at the computing device 1900 in the form of a client-sidescript (e.g., JavaScript) or a client-side application. In some cases,the code may reside in the cloud. As would be realized by a skilledperson, any software described herein may reside on the computing device1900, on a server or in the cloud.

FIG. 20 illustrates an example process 2000 by which multidimensionalnavigation may be completed. The process 2000 begins at step 2010, wherean application (e.g., application 1920) presents, within a firstapplication window, an interface for displaying pages. The interfaceincludes a first control for navigating pages according to a firstdimension and a second control for navigating pages according to asecond dimension. Each of the first dimension and the second dimensioncorrespond to an ordered list of two or more pages. According to someexamples, the first control includes a back button and a forward button,and the second control includes a control, presented within the window,for accessing a stacking interface.

In step 2020, the application presents, within the application window, afirst page. For example, the first page may be presented responsive tothe user opening the application to a home page or responsive to theuser typing an address into the address bar. The first page may bedownloaded over a network (e.g., using the network interface 1910) ormay be a locally-stored page from the local memory (e.g., memory 1915).

In step 2030, the application receives, from within the first page, auser input for selecting a link to a second page. The user input mayinclude the user clicking the link with a mouse. Alternatively, the userinput may include the user touching the link on a touchscreen.

In step 2040, the application determines, based on at least one of theuser input or metadata of the link, whether to navigate to the secondpage via the first dimension or via the second dimension. The metadataof the link may be provided by an author of the first page and mayindicate that the link uses either the first or the second dimension fornavigation to the linked page. The user input may include a left clickfor navigation via the second dimension or a right click and a selectionof an option from a dropdown menu for navigation via the firstdimension. Upon determining to navigate via the first dimension, theprocess 2000 continues to step 2050. Upon determining to navigate viathe second dimension, the process 2000 continues to step 2060.

In step 2050, the application navigates to the second page and providesfor use of the first control to navigate, within the application window,from the second page back to the first page. For example, if the firstcontrol includes a back button and forward button, the application mayprovide for use of the back button to navigate from the second page backto the first page. After step 2050, the process 2000 ends.

In step 2060, the application navigates to the second page and providesfor use of the second control to navigate, within the applicationwindow, from the second page back to the first page. For example, if thesecond control is for a stacking interface, the application may providefor use of the stacking interface to navigate from the second page backto the first page. After step 2060, the process 2000 ends.

According to some examples, the second control may include a portion ofthe first page that continues to be presented while the second page ispresented, where, upon selection of the first page, the first page isre-presented within the window. According to some examples, the secondcontrol includes a button, two parallel lines, or another user interfaceelement indicating that the stack exists. Upon receiving a selection ofthe second control, the application presents a stack including two ormore cards representing two or more pages that are accessible, via thesecond dimension, from a page previously displayed in the window. Thetwo or more pages may include the first page and the second page. A cardrepresenting a page may include a portion of the page or an address ofthe page.

The application may store information related to the first page orinformation related to the second page (or information related to anyother page in the stack). The information related to the first page mayinclude an amount of time the user spent viewing the first page and/or atime when the first page was last updated. The information related tothe second page may include an amount of time the user spent viewing thesecond page and/or a time when the second page was last updated. Theinformation related to the first page or the information related to thesecond page may be presented to the user. The information about otherpages in the stack (if any) may be similar to the information about thefirst page or the second page and may also be presented to the user.

The process 2000 is described above as being implemented in anapplication window without tabs. However, the process 2000 may beimplemented in a tab of an application window, for example, in the tab104 of the application window 100. The application window may include asingle tab or multiple tabs.

FIG. 21 conceptually illustrates an electronic system 2100 with whichsome implementations of the subject technology are implemented. Forexample, the computing device 1900 may be implemented using thearrangement of the electronic system 2100. The electronic system 2100can be a computer (e.g., a mobile phone, PDA), or any other sort ofelectronic device. Such an electronic system includes various types ofcomputer readable media and interfaces for various other types ofcomputer readable media. Electronic system 2100 includes a bus 2105,processor(s) 2110, a system memory 2115, a read-only memory 2120, apermanent storage device 2125, an input device interface 2130, an outputdevice interface 2135, and a network interface 2140.

The bus 2105 collectively represents all system, peripheral, and chipsetbuses that communicatively connect the numerous internal devices of theelectronic system 2100. For instance, the bus 2105 communicativelyconnects the processor(s) 2110 with the read-only memory 2120, thesystem memory 2115, and the permanent storage device 2125.

From these various memory units, the processor(s) 2110 retrievesinstructions to execute and data to process in order to execute theprocesses of the subject technology. The (processor(s) can include asingle processor or a multi-core processor in different implementations.

The read-only-memory (ROM) 2120 stores static data and instructions thatare needed by the processor(s) 2110 and other modules of the electronicsystem. The permanent storage device 2125, on the other hand, is aread-and-write memory device. This device is a non-volatile memory unitthat stores instructions and data even when the electronic system 2100is off. Some implementations of the subject technology use amass-storage device (for example a magnetic or optical disk and itscorresponding disk drive) as the permanent storage device 2125.

Other implementations use a removable storage device (for example afloppy disk, flash drive, and its corresponding disk drive) as thepermanent storage device 2125. Like the permanent storage device 2125,the system memory 2115 is a read-and-write memory device. However,unlike storage device 2125, the system memory 2115 is a volatileread-and-write memory, such a random access memory. The system memory2115 stores some of the instructions and data that the processor needsat runtime. In some implementations, the processes of the subjecttechnology are stored in the system memory 2115, the permanent storagedevice 2125, or the read-only memory 2120. For example, the variousmemory units include instructions for multidimensional navigation inaccordance with some implementations. From these various memory units,the processor(s) 2110 retrieves instructions to execute and data toprocess in order to execute the processes of some implementations.

The bus 2105 also connects to the input and output device interfaces2130 and 2135. The input device interface 2130 enables the user tocommunicate information and select commands to the electronic system.Input devices used with input device interface 2130 include, forexample, alphanumeric keyboards and pointing devices (also called“cursor control devices”). Output device interfaces 2135 enables, forexample, the display of images generated by the electronic system 2100.Output devices used with output device interface 2135 include, forexample, printers and display devices, for example cathode ray tubes(CRT) or liquid crystal displays (LCD). Some implementations includedevices for example a touch screen that functions as both input andoutput devices.

Finally, as shown in FIG. 21, bus 2105 also couples electronic system2100 to a network (not shown) through a network interface 2140. In thismanner, the electronic system 2100 can be a part of a network ofcomputers (for example a local area network (LAN), a wide area network(WAN), or an Intranet, or a network of networks, for example theInternet. Any or all components of electronic system 2100 can be used inconjunction with the subject technology.

The above-described features and applications can be implemented assoftware processes that are specified as a set of instructions recordedon a computer readable storage medium (also referred to as computerreadable medium). When these instructions are executed by one or moreprocessor(s) (which may include, for example, one or more processors,cores of processors, or other processing units), they cause theprocessor(s) to perform the actions indicated in the instructions.Examples of computer readable media include, but are not limited to,CD-ROMs, flash drives, RAM chips, hard drives, EPROMs, etc. The computerreadable media does not include carrier waves and electronic signalspassing wirelessly or over wired connections.

In this specification, the term “software” is meant to include firmwareresiding in read-only memory or applications stored in magnetic storageor flash storage, for example, a solid-state drive, which can be readinto memory for processing by a processor. Also, in someimplementations, multiple software technologies can be implemented assub-parts of a larger program while remaining distinct softwaretechnologies. In some implementations, multiple software technologiescan also be implemented as separate programs. Finally, any combinationof separate programs that together implement a software technologydescribed here is within the scope of the subject technology. In someimplementations, the software programs, when installed to operate on oneor more electronic systems, define one or more specific machineimplementations that execute and perform the operations of the softwareprograms.

A computer program (also known as a program, software, softwareapplication, script, or code) can be written in any form of programminglanguage, including compiled or interpreted languages, declarative orprocedural languages, and it can be deployed in any form, including as astand alone program or as a module, component, subroutine, object, orother unit suitable for use in a computing environment. A computerprogram may, but need not, correspond to a file in a file system. Aprogram can be stored in a portion of a file that holds other programsor data (e.g., one or more scripts stored in a markup languagedocument), in a single file dedicated to the program in question, or inmultiple coordinated files (e.g., files that store one or more modules,sub programs, or portions of code). A computer program can be deployedto be executed on one computer or on multiple computers that are locatedat one site or distributed across multiple sites and interconnected by acommunication network.

These functions described above can be implemented in digital electroniccircuitry, in computer software, firmware or hardware. The techniquescan be implemented using one or more computer program products.Programmable processors and computers can be included in or packaged asmobile devices. The processes and logic flows can be performed by one ormore programmable processors and by one or more programmable logiccircuitry. General and special purpose computing devices and storagedevices can be interconnected through communication networks.

Some implementations include electronic components, for examplemicroprocessors, storage and memory that store computer programinstructions in a machine-readable or computer-readable medium(alternatively referred to as computer-readable storage media,machine-readable media, or machine-readable storage media). Someexamples of such computer-readable media include RAM, ROM, read-onlycompact discs (CD-ROM), recordable compact discs (CD-R), rewritablecompact discs (CD-RW), read-only digital versatile discs (e.g., DVD-ROM,dual-layer DVD-ROM), a variety of recordable/rewritable DVDs (e.g.,DVD-RAM, DVD−RW, DVD+RW, etc.), flash memory (e.g., SD cards, mini-SDcards, micro-SD cards, etc.), magnetic or solid state hard drives,read-only and recordable Blu-Ray® discs, ultra density optical discs,any other optical or magnetic media, and floppy disks. Thecomputer-readable media can store a computer program that is executableby at least one processor and includes sets of instructions forperforming various operations. Examples of computer programs or computercode include machine code, for example is produced by a compiler, andfiles including higher-level code that are executed by a computer, anelectronic component, or a microprocessor using an interpreter.

While the above discussion primarily refers to microprocessor ormulti-core processors that execute software, some implementations areperformed by one or more integrated circuits, for example applicationspecific integrated circuits (ASICs) or field programmable gate arrays(FPGAs). In some implementations, such integrated circuits executeinstructions that are stored on the circuit itself.

As used in this specification and any claims of this application, theterms “computer”, “server”, “processor”, and “memory” all refer toelectronic or other technological devices. These terms exclude people orgroups of people. For the purposes of the specification, the termsdisplay or displaying means displaying on an electronic device. As usedin this specification and any claims of this application, the terms“computer readable medium” and “computer readable media” are entirelyrestricted to tangible, physical objects that store information in aform that is readable by a computer. These terms exclude any wirelesssignals, wired download signals, and any other ephemeral signals.

To provide for interaction with a user, implementations of the subjectmatter described in this specification can be implemented on a computerhaving a display device, e.g., a cathode ray tube (CRT) or liquidcrystal display (LCD) monitor, for displaying information to the userand a keyboard and a pointing device, e.g., a mouse or a trackball, bywhich the user can provide input to the computer. Other kinds of devicescan be used to provide for interaction with a user as well; for example,feedback provided to the user can be any form of sensory feedback, e.g.,visual feedback, auditory feedback, or tactile feedback; and input fromthe user can be received in any form, including acoustic, speech, ortactile input. In addition, a computer can interact with a user bysending documents to and receiving documents from a device that is usedby the user; for example, by sending web pages to a web browser on auser's client device in response to requests received from the webbrowser.

The subject matter described in this specification can be implemented ina computing system that includes a back end component, e.g., as a dataserver, or that includes a middleware component, e.g., an applicationserver, or that includes a front end component, e.g., a client computerhaving a graphical user interface or a Web browser through which a usercan interact with an implementation of the subject matter described inthis specification, or any combination of one or more such back end,middleware, or front end components. The components of the system can beinterconnected by any form or medium of digital data communication,e.g., a communication network. Examples of communication networksinclude a local area network (LAN) and a wide area network (WAN), aninter-network (e.g., the Internet), and peer-to-peer networks (e.g., adhoc peer-to-peer networks).

The computing system can include clients and servers. A client andserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other. In someaspects of the disclosed subject matter, a server transmits data (e.g.,an HTML page) to a client device (e.g., for purposes of displaying datato and receiving user input from a user interacting with the clientdevice). Data generated at the client device (e.g., a result of the userinteraction) can be received from the client device at the server.

It is understood that any specific order or hierarchy of steps in theprocesses disclosed is an illustration of example approaches. Based upondesign preferences, it is understood that the specific order orhierarchy of steps in the processes may be rearranged, or that allillustrated steps be performed. Some of the steps may be performedsimultaneously. For example, in certain circumstances, multitasking andparallel processing may be advantageous. Moreover, the separation ofvarious system components illustrated above should not be understood asrequiring such separation, and it should be understood that thedescribed program components and systems can generally be integratedtogether in a single software product or packaged into multiple softwareproducts.

Various modifications to these aspects will be readily apparent, and thegeneric principles defined herein may be applied to other aspects. Thus,the claims are not intended to be limited to the aspects shown herein,but is to be accorded the full scope consistent with the languageclaims, where reference to an element in the singular is not intended tomean “one and only one” unless specifically so stated, but rather “oneor more.” Unless specifically stated otherwise, the term “some” refersto one or more. Pronouns in the masculine (e.g., his) include thefeminine and neuter gender (e.g., her and its) and vice versa. Headingsand subheadings, if any, are used for convenience only and do not limitthe subject technology.

A phrase, for example, an “aspect” does not imply that the aspect isessential to the subject technology or that the aspect applies to allconfigurations of the subject technology. A disclosure relating to anaspect may apply to all configurations, or one or more configurations. Aphrase, for example, an aspect may refer to one or more aspects and viceversa. A phrase, for example, a “configuration” does not imply that suchconfiguration is essential to the subject technology or that suchconfiguration applies to all configurations of the subject technology. Adisclosure relating to a configuration may apply to all configurations,or one or more configurations. A phrase, for example, a configurationmay refer to one or more configurations and vice versa.

What is claimed is:
 1. A non-transitory computer-readable mediumcomprising instruction which, when executed by one or more computers,cause the one or more computers to implement a method, the methodcomprising: presenting, within an application window, an interface fordisplaying resources, the interface comprising a first control fornavigating resources according to a first dimension and a second controlfor navigating resources according to a second dimension, wherein eachof the first dimension and the second dimension corresponds to anordered list of two or more resources; presenting, within theapplication window, a first resource; receiving, from within the firstresource, a user input for selecting a link to a second resource;determining, based on at least one of the user input or metadata of thelink, whether to navigate to the second resource via the first dimensionor via the second dimension; upon determining to navigate to the secondresource via the first dimension: navigating to the second resource andproviding for use of the first control to navigate, within theapplication window, from the second resource back to the first resource;and upon determining to navigate to the second resource via the seconddimension: navigating to the second resource and providing for use ofthe second control to navigate, within the application window, from thesecond resource back to the first resource.
 2. The computer-readablemedium of claim 1, wherein the first control comprises a back button anda forward button, wherein the first resource comprises a first page, andwherein the second resource comprises a second page.
 3. Thecomputer-readable medium of claim 1, wherein the second controlcomprises a portion of the first resource that continues to be presentedwhile the second resource is presented, the method further comprising:upon selection of the portion of the first resource, re-presenting thefirst resource within the window.
 4. The computer-readable medium ofclaim 1, wherein the second control comprises a control, presentedwithin the window, for accessing a stacking interface, the methodfurther comprising: receiving a selection of the second control; andpresenting, responsive to the selection of the second control, a stack,the stack including two or more cards representing the two or moreresources that are accessible, via the second dimension, from a resourcepreviously displayed in the window, wherein the two or more resourcesinclude the first resource and the second resource.
 5. Thecomputer-readable medium of claim 4, wherein a card representing aresource comprises a portion of the represented resource or an addressof the represented resource.
 6. The computer-readable medium of claim 4,the method further comprising: receiving an input corresponding todragging a card across the window; and reordering the resources in thestack responsive to the input corresponding to dragging the card acrossthe window.
 7. The computer-readable medium of claim 4, the methodfurther comprising: receiving an input corresponding to dragging a cardto a predetermined position; and deleting a resource in the stackresponsive to the input corresponding to dragging the card to thepredetermined position.
 8. The computer-readable medium of claim 4, themethod further comprising: receiving an input corresponding to dragginga card to a predetermined position; and moving a resource in the stackto a new window or a new tab responsive to the input corresponding todragging the card to the predetermined position.
 9. Thecomputer-readable medium of claim 1, wherein a stack of resourcesaccessible via the second dimension is represented as a master uniformresource indicator (URI) address that includes a combination of uniformresource indicator (URI) addresses of resources in the stack, whereinthe stack of resources includes the first resource and the secondresource.
 10. The computer-readable medium of claim 9, the methodfurther comprising: receiving a user input for sharing the master URIaddress via a messaging service; and sharing the master URI address viathe messaging service in response the a user input for sharing themaster URI address via the messaging service.
 11. The computer-readablemedium of claim 1, wherein determining, based on the user input, whetherto navigate to the second resource via the first dimension or via thesecond dimension comprises: if the user input comprises a left click:determining to navigate to the second resource via the second dimension;and if the user input comprises a right click and a selection of thefirst dimension from a menu: determining to navigate to the secondresource via the first dimension.
 12. The computer-readable medium ofclaim 1, wherein the metadata of the link is provided by an author ofthe first resource.
 13. The computer-readable medium of claim 1, themethod further comprising: storing, in association with the firstresource, information related to the first resource, the informationcomprising an amount of time a user spent viewing the first resource anda time when the first resource was last updated; storing, in associationwith the second resource, information related to the second resource,the information comprising an amount of time a user spent viewing thesecond resource and a time when the second resource was last updated;and presenting, to the user, the information related to the firstresource or the information related to the second resource.
 14. Thecomputer-readable medium of claim 1, wherein navigation from the firstresource to the second resource is via the first dimension, the methodfurther comprising: receiving, from within the second resource, anadditional user input for selecting an additional link to a thirdresource; determining, based on at least one of the additional userinput or metadata of the additional link, to navigate to the thirdresource via the second dimension; and responsive to determining tonavigate to the third resource via the second dimension, navigating tothe third resource and providing for use of the second control tonavigate, within the application window, from the third resource back tothe second resource.
 15. The computer-readable medium of claim 14, themethod further comprising: responsive to determining to navigate to thethird resource via the second dimension, continuing to provide for useof the first control to navigate, within the application window, fromthe third resource back to the first resource.
 16. A method comprising:presenting, within an application window, an interface for displayingresources, the interface comprising a first control for navigatingresources according to a first dimension and a second control fornavigating resources according to a second dimension, wherein each ofthe first dimension and the second dimension corresponds to an orderedlist of two or more resources; presenting, within the applicationwindow, a first resource; receiving, from within the first resource, auser input for selecting a link to a second resource; determining, basedon at least one of the user input or metadata of the link, whether tonavigate to the second resource via the first dimension or via thesecond dimension; upon determining to navigate to the second resourcevia the first dimension: navigating to the second resource and providingfor use of the first control to navigate, within the application window,from the second resource back to the first resource; and upondetermining to navigate to the second resource via the second dimension:navigating to the second resource and providing for use of the secondcontrol to navigate, within the application window, from the secondresource back to the first resource.
 17. The method of claim 16, whereinthe first control comprises a back button and a forward button, whereinthe first resource comprises a first page, and wherein the secondresource comprises a second page.
 18. The method of claim 16, whereinthe second control comprises a portion of the first resource thatcontinues to be presented while the second resource is presented, themethod further comprising: upon selection of the portion of the firstresource, re-presenting the first resource within the window.
 19. Themethod of claim 16, wherein the second control comprises a control,presented within the application window, for accessing a stackinginterface, the method further comprising: receiving a selection of thesecond control; and presenting, responsive to the selection of thesecond control, a stack, the stack including two or more cardsrepresenting the two or more resources that are accessible, via thesecond dimension, from a resource previously displayed in theapplication window, wherein the two or more resources include the firstresource and the second resource.
 20. A system comprising: one or moreprocessors; and a memory comprising instructions which, when executed bythe one or more processors, cause the one or more processors to:present, within an application window, an interface for displayingresources, the interface comprising a first control for navigatingresources according to a first dimension and a second control fornavigating resources according to a second dimension, wherein each ofthe first dimension and the second dimension corresponds to an orderedlist of two or more resources, and wherein at least one of the firstcontrol and the second control comprises a control for accessing astacking interface; present, within the application window, a firstresource; receive, from within the first resource, a user input forselecting a link to a second resource; determine, based on at least oneof the user input or metadata of the link, whether to navigate to thesecond resource via the first dimension or via the second dimension;upon determining to navigate to the second resource via the firstdimension: navigate to the second resource and provide for use of thefirst control to navigate, within the application window, from thesecond resource back to the first resource; and upon determining tonavigate to the second resource via the second dimension: navigate tothe second resource and provide for use of the second control tonavigate, within the application window, from the second resource hackto the first resource.